package com.BD;

import java.util.ArrayList;
import java.util.List;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
public class DB_ventas extends SQLiteOpenHelper {
	
	//ESTA CLASE SIRVE PARA CREAR LA BASE DE DATOS CON LA TABLA
	//PARA DÍAS, SEMANA, QUINCENA, MES.
 
    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 2;
 
    // Database Name
    private static final String DATABASE_NAME = "DB_Events_Reporte_Ventas";
 
    // Contacts table name
    private static final String MASTER_TABLE = "Tabla_Maestra"; 
        
    // Contacts Table Columns names
    private static final String KEY_idTipoEvento = "idTipoEvento";
    private static final String KEY_nomTipoEvento = "nomTipoEvento";
    private static final String KEY_idSubtipoEvento = "idSubTipoEvento";    
    private static final String KEY_nomSubtipoEvento = "nomSubtipoEvento";
    private static final String KEY_idEvento = "idEvento";
    private static final String KEY_idPromotor = "idPromotor";
    private static final String KEY_nomPromotor = "nomPromotor";
    private static final String KEY_idCanal = "idCanal";
    private static final String KEY_nomCanal = "nomCanal";
    private static final String KEY_edad = "edad";
    private static final String KEY_idDistrito = "idDistrito";
    private static final String KEY_nomDistrito = "nomDistrito";
    private static final String KEY_idPuntodeVenta = "idPuntodeVenta";
    private static final String KEY_nomPuntodeVenta = "nomPuntodeVenta";
    private static final String KEY_ubicacion = "ubicacion";
    private static final String KEY_sexo = "sexo";
    private static final String KEY_anio = "anio";
    private static final String KEY_trimestre = "trimestre";
    private static final String KEY_mes = "mes";
    private static final String KEY_monto = "monto";
     
    public DB_ventas(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db) {
    	
    	//CREACIÓN DE LA TABLA MAESTRA
    	String CREATE_TABLE_1 = "CREATE TABLE " + MASTER_TABLE + "("
    			+ KEY_idTipoEvento + " INTEGER,"
    			+ KEY_nomTipoEvento  + " TEXT,"
    			+ KEY_idSubtipoEvento + " INTEGER,"    			
    			+ KEY_nomSubtipoEvento  + " TEXT,"
    			+ KEY_idEvento  + " INTEGER,"
    			+ KEY_idPromotor+ " INTEGER,"
    			+ KEY_nomPromotor+ " TEXT,"
    			+ KEY_idCanal+ " INTEGER,"
    		    + KEY_nomCanal + " TEXT,"
    			+ KEY_edad+ " TEXT,"
    			+ KEY_idDistrito+ " INTEGER,"
    			+ KEY_nomDistrito+ " TEXT,"
    			+ KEY_idPuntodeVenta+ " INTEGER,"
    			+ KEY_nomPuntodeVenta+ " TEXT,"
    			+ KEY_ubicacion+ " TEXT,"
    			+ KEY_sexo+ " TEXT,"
    			+ KEY_anio+ " INTEGER,"
    			+ KEY_trimestre+ " INTEGER,"
    			+ KEY_mes+ " INTEGER,"
    			+ KEY_monto+ " INTEGER"
                + ")";
        db.execSQL(CREATE_TABLE_1);
        Log.e("TB",CREATE_TABLE_1);
        
    }
 
    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + MASTER_TABLE);
 
        // Create tables again
        onCreate(db);
    }
 
    /**
     * All CRUD(Create, Read, Update, Delete) Operations
     */
 
    // Adding new Register
    public void addContact(Registro_Ventas nuevoReg) {
        SQLiteDatabase db = this.getWritableDatabase();
 
        ContentValues values = new ContentValues();
        values.put(KEY_idTipoEvento , nuevoReg.getIdTipoEvento()); 
        values.put(KEY_nomTipoEvento  , nuevoReg.getNomTipoEvento()); 
        values.put(KEY_idSubtipoEvento, nuevoReg.getIdSubtipoEvento());        
        values.put(KEY_nomSubtipoEvento, nuevoReg.getNomSubtipoEvento());
        values.put(KEY_idEvento, nuevoReg.getIdEvento());
        values.put(KEY_idPromotor, nuevoReg.getIdPromotor());
        values.put(KEY_nomPromotor,nuevoReg.getNomPromotor());
        values.put(KEY_idCanal,nuevoReg.getIdCanal());
        values.put(KEY_nomCanal,nuevoReg.getNomCanal());
        values.put(KEY_edad,nuevoReg.getEdad());
        values.put(KEY_idDistrito, nuevoReg.getIdDistrito());
        values.put(KEY_nomDistrito, nuevoReg.getNomDistrito());
        values.put(KEY_idPuntodeVenta, nuevoReg.getIdPuntodeVenta());
        values.put(KEY_nomPuntodeVenta, nuevoReg.getNomPuntodeVenta());
        values.put(KEY_ubicacion, nuevoReg.getUbicacion());
        values.put(KEY_sexo, nuevoReg.getEdad());
        values.put(KEY_anio, nuevoReg.getAnio());
        values.put(KEY_trimestre, nuevoReg.getTrimestre());
        values.put(KEY_mes, nuevoReg.getMes());
        values.put(KEY_monto, nuevoReg.getMonto());
 
        // Inserting Row
        db.insert(MASTER_TABLE, null, values);
        db.close(); // Closing database connection
    }
    
	public void DeleteTableRows() {
	    	    	
		SQLiteDatabase db = this.getWritableDatabase();
	    db.delete(MASTER_TABLE, null,null);
	    db.close();       
	}
	
	public ArrayList<Registro_Ventas> getVentasAnual(String ubicacion, int anioI, int anioF) {
    	
    	ArrayList<Registro_Ventas> resultado = new ArrayList<Registro_Ventas>(); 
    	
    	SQLiteDatabase db = this.getWritableDatabase();
    	
    	String[] args = new String[] {ubicacion, anioI +"", anioF+""};
    	Cursor cursor = null;
    	if (anioF == anioI){
    		args = new String[] {ubicacion, anioI+""};
    		cursor = db.rawQuery(" SELECT anio, sum(monto) FROM Tabla_Maestra WHERE ubicacion =? AND anio =? group by anio;",args);
    	}
    	else
    		cursor = db.rawQuery(" SELECT anio, sum(monto) FROM Tabla_Maestra WHERE ubicacion =? AND anio >=? AND anio<=? group by anio;", args);
         
        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
            	Registro_Ventas reg = new Registro_Ventas();
            	reg.setAnio(cursor.getInt(0)); 
                reg.setMonto(cursor.getInt(1));
                
                // Adding contact to list
                resultado.add(reg);
            } while (cursor.moveToNext());
        }
 
        return resultado;
    }
}